"""
AimRT Python Runtime Module
"""
from __future__ import annotations
import datetime
import typing
__all__ = ['AIMRT_MIN_GENCODE_VERSION_INT', 'AimRT_RUNTIME_VERSION_INT', 'ChannelHandleRef', 'ConfiguratorRef', 'Context', 'ContextRef', 'Core', 'CoreOptions', 'CoreRef', 'ExecutorManagerRef', 'ExecutorRef', 'LoggerRef', 'ModuleBase', 'ModuleInfo', 'ParameterHandleRef', 'ProxyBase', 'PublisherRef', 'PyPbTypeSupport', 'RpcContext', 'RpcContextRef', 'RpcContextType', 'RpcHandleRef', 'RpcStatus', 'RpcStatusRetCode', 'ServiceBase', 'SubscriberRef', 'aimrt_channel_context_type_t']
class ChannelHandleRef:
    def GetPublisher(self, arg0: str) -> PublisherRef:
        ...
    def GetSubscriber(self, arg0: str) -> SubscriberRef:
        ...
    def MergeSubscribeContextToPublishContext(self, arg0: ContextRef, arg1: ContextRef) -> None:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ConfiguratorRef:
    def GetConfigFilePath(self) -> str:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class Context:
    def CheckUsed(self) -> bool:
        ...
    def GetMetaKeys(self) -> list[str]:
        ...
    def GetMetaValue(self, arg0: str) -> str:
        ...
    def GetSerializationType(self) -> str:
        ...
    def GetType(self) -> aimrt_channel_context_type_t:
        ...
    def Reset(self) -> None:
        ...
    def SetMetaValue(self, arg0: str, arg1: str) -> None:
        ...
    def SetSerializationType(self, arg0: str) -> None:
        ...
    def SetUsed(self) -> None:
        ...
    def ToString(self) -> str:
        ...
    def __init__(self) -> None:
        ...
class ContextRef:
    def CheckUsed(self) -> bool:
        ...
    def GetMetaKeys(self) -> list[str]:
        ...
    def GetMetaValue(self, arg0: str) -> str:
        ...
    def GetSerializationType(self) -> str:
        ...
    def GetType(self) -> aimrt_channel_context_type_t:
        ...
    def SetMetaValue(self, arg0: str, arg1: str) -> None:
        ...
    def SetSerializationType(self, arg0: str) -> None:
        ...
    def SetUsed(self) -> None:
        ...
    def ToString(self) -> str:
        ...
    def __bool__(self) -> bool:
        ...
    @typing.overload
    def __init__(self) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: Context) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: Context) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: Context) -> None:
        ...
class Core:
    def CreateModule(self, arg0: str) -> CoreRef:
        ...
    def GenInitializationReport(self) -> str:
        ...
    def Initialize(self, arg0: CoreOptions) -> None:
        ...
    def RegisterModule(self, arg0: ModuleBase) -> None:
        ...
    def Shutdown(self) -> None:
        ...
    def Start(self) -> None:
        ...
    def __init__(self) -> None:
        ...
class CoreOptions:
    cfg_file_path: str
    def __init__(self) -> None:
        ...
class CoreRef:
    def GetChannelHandle(self) -> ChannelHandleRef:
        ...
    def GetConfigurator(self) -> ConfiguratorRef:
        ...
    def GetExecutorManager(self) -> ExecutorManagerRef:
        ...
    def GetLogger(self) -> LoggerRef:
        ...
    def GetParameterHandle(self) -> ParameterHandleRef:
        ...
    def GetRpcHandle(self) -> RpcHandleRef:
        ...
    def Info(self) -> ModuleInfo:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ExecutorManagerRef:
    def GetExecutor(self, arg0: str) -> ExecutorRef:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ExecutorRef:
    def Execute(self, arg0: typing.Callable[[], None]) -> None:
        ...
    def ExecuteAfter(self, arg0: datetime.timedelta, arg1: typing.Callable[[], None]) -> None:
        ...
    def ExecuteAt(self, arg0: datetime.datetime, arg1: typing.Callable[[], None]) -> None:
        ...
    def IsInCurrentExecutor(self) -> bool:
        ...
    def Name(self) -> str:
        ...
    def Now(self) -> datetime.datetime:
        ...
    def SupportTimerSchedule(self) -> bool:
        ...
    def ThreadSafe(self) -> bool:
        ...
    def Type(self) -> str:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class LoggerRef:
    def GetLogLevel(self) -> int:
        ...
    def Log(self, lvl: int, line: int, file_name: str, function_name: str, log_data: str, log_data_size: int) -> None:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ModuleBase:
    def Info(self) -> ModuleInfo:
        ...
    def Initialize(self, arg0: CoreRef) -> bool:
        ...
    def Shutdown(self) -> None:
        ...
    def Start(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ModuleInfo:
    author: str
    build_version: int
    description: str
    major_version: int
    minor_version: int
    name: str
    patch_version: int
    def __init__(self) -> None:
        ...
class ParameterHandleRef:
    def GetParameter(self, arg0: str) -> str:
        ...
    def SetParameter(self, arg0: str, arg1: str) -> None:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class ProxyBase:
    def GetDefaultContextSharedPtr(self) -> RpcContext:
        ...
    def NewContextSharedPtr(self, ctx_ref: RpcContextRef = None) -> RpcContext:
        ...
    def RpcType(self) -> str:
        ...
    def ServiceName(self) -> str:
        ...
    def SetDefaultContextSharedPtr(self, arg0: RpcContext) -> None:
        ...
    def SetServiceName(self, arg0: str) -> None:
        ...
    def __init__(self, arg0: RpcHandleRef, arg1: str, arg2: str) -> None:
        ...
class PublisherRef:
    def GetTopic(self) -> str:
        ...
    def MergeSubscribeContextToPublishContext(self, arg0: ContextRef, arg1: ContextRef) -> None:
        ...
    def PbPublishWithCtx(self, arg0: str, arg1: ContextRef, arg2: str) -> None:
        ...
    def PbRegisterPublishType(self, arg0: PyPbTypeSupport) -> bool:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class PyPbTypeSupport:
    def SetSerializationTypesSupportedList(self, arg0: list[str]) -> None:
        ...
    def SetTypeName(self, arg0: str) -> None:
        ...
    def __init__(self) -> None:
        ...
class RpcContext:
    def CheckUsed(self) -> bool:
        ...
    def GetFunctionName(self) -> str:
        ...
    def GetMetaKeys(self) -> list[str]:
        ...
    def GetMetaValue(self, arg0: str) -> str:
        ...
    def GetSerializationType(self) -> str:
        ...
    def GetToAddr(self) -> str:
        ...
    def GetType(self) -> RpcContextType:
        ...
    def Reset(self) -> None:
        ...
    def SetFunctionName(self, arg0: str) -> None:
        ...
    def SetMetaValue(self, arg0: str, arg1: str) -> None:
        ...
    def SetSerializationType(self, arg0: str) -> None:
        ...
    def SetTimeout(self, arg0: datetime.timedelta) -> None:
        ...
    def SetToAddr(self, arg0: str) -> None:
        ...
    def SetUsed(self) -> None:
        ...
    def Timeout(self) -> datetime.timedelta:
        ...
    def ToString(self) -> str:
        ...
    def __init__(self) -> None:
        ...
class RpcContextRef:
    def CheckUsed(self) -> bool:
        ...
    def GetFunctionName(self) -> str:
        ...
    def GetMetaKeys(self) -> list[str]:
        ...
    def GetMetaValue(self, arg0: str) -> str:
        ...
    def GetSerializationType(self) -> str:
        ...
    def GetToAddr(self) -> str:
        ...
    def GetType(self) -> RpcContextType:
        ...
    def SetFunctionName(self, arg0: str) -> None:
        ...
    def SetMetaValue(self, arg0: str, arg1: str) -> None:
        ...
    def SetSerializationType(self, arg0: str) -> None:
        ...
    def SetTimeout(self, arg0: datetime.timedelta) -> None:
        ...
    def SetToAddr(self, arg0: str) -> None:
        ...
    def SetUsed(self) -> None:
        ...
    def Timeout(self) -> datetime.timedelta:
        ...
    def ToString(self) -> str:
        ...
    def __bool__(self) -> bool:
        ...
    @typing.overload
    def __init__(self) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: RpcContext) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: RpcContext) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: RpcContext) -> None:
        ...
class RpcContextType:
    """
    Members:
    
      AIMRT_RPC_CLIENT_CONTEXT
    
      AIMRT_RPC_SERVER_CONTEXT
    """
    AIMRT_RPC_CLIENT_CONTEXT: typing.ClassVar[RpcContextType]  # value = <RpcContextType.AIMRT_RPC_CLIENT_CONTEXT: 0>
    AIMRT_RPC_SERVER_CONTEXT: typing.ClassVar[RpcContextType]  # value = <RpcContextType.AIMRT_RPC_SERVER_CONTEXT: 1>
    __members__: typing.ClassVar[dict[str, RpcContextType]]  # value = {'AIMRT_RPC_CLIENT_CONTEXT': <RpcContextType.AIMRT_RPC_CLIENT_CONTEXT: 0>, 'AIMRT_RPC_SERVER_CONTEXT': <RpcContextType.AIMRT_RPC_SERVER_CONTEXT: 1>}
    def __eq__(self, other: typing.Any) -> bool:
        ...
    def __getstate__(self) -> int:
        ...
    def __hash__(self) -> int:
        ...
    def __index__(self) -> int:
        ...
    def __init__(self, value: int) -> None:
        ...
    def __int__(self) -> int:
        ...
    def __ne__(self, other: typing.Any) -> bool:
        ...
    def __repr__(self) -> str:
        ...
    def __setstate__(self, state: int) -> None:
        ...
    def __str__(self) -> str:
        ...
    @property
    def name(self) -> str:
        ...
    @property
    def value(self) -> int:
        ...
class RpcHandleRef:
    def PbInvoke(self, arg0: str, arg1: RpcContextRef, arg2: str) -> tuple[RpcStatus, bytes]:
        ...
    def PbRegisterClientFunc(self, arg0: str, arg1: PyPbTypeSupport, arg2: PyPbTypeSupport) -> bool:
        ...
    @typing.overload
    def RegisterService(self, arg0: str, arg1: ServiceBase) -> bool:
        ...
    @typing.overload
    def RegisterService(self, arg0: ServiceBase) -> bool:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class RpcStatus:
    def Code(self) -> int:
        ...
    def OK(self) -> bool:
        ...
    def ToString(self) -> str:
        ...
    def __bool__(self) -> bool:
        ...
    @typing.overload
    def __init__(self) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: RpcStatusRetCode) -> None:
        ...
    @typing.overload
    def __init__(self, arg0: int) -> None:
        ...
class RpcStatusRetCode:
    """
    Members:
    
      OK
    
      UNKNOWN
    
      TIMEOUT
    
      SVR_UNKNOWN
    
      SVR_BACKEND_INTERNAL_ERROR
    
      SVR_NOT_IMPLEMENTED
    
      SVR_NOT_FOUND
    
      SVR_INVALID_SERIALIZATION_TYPE
    
      SVR_SERIALIZATION_FAILED
    
      SVR_INVALID_DESERIALIZATION_TYPE
    
      SVR_DESERIALIZATION_FAILED
    
      SVR_HANDLE_FAILED
    
      CLI_UNKNOWN
    
      CLI_BACKEND_INTERNAL_ERROR
    
      CLI_INVALID_CONTEXT
    
      CLI_INVALID_ADDR
    
      CLI_INVALID_SERIALIZATION_TYPE
    
      CLI_SERIALIZATION_FAILED
    
      CLI_INVALID_DESERIALIZATION_TYPE
    
      CLI_DESERIALIZATION_FAILED
    
      CLI_NO_BACKEND_TO_HANDLE
    
      CLI_SEND_REQ_FAILED
    
      CLI_FUNC_NOT_REGISTERED
    """
    CLI_BACKEND_INTERNAL_ERROR: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_BACKEND_INTERNAL_ERROR: 2002>
    CLI_DESERIALIZATION_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_DESERIALIZATION_FAILED: 2008>
    CLI_FUNC_NOT_REGISTERED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_FUNC_NOT_REGISTERED: 2001>
    CLI_INVALID_ADDR: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_INVALID_ADDR: 2004>
    CLI_INVALID_CONTEXT: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_INVALID_CONTEXT: 2003>
    CLI_INVALID_DESERIALIZATION_TYPE: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_INVALID_DESERIALIZATION_TYPE: 2007>
    CLI_INVALID_SERIALIZATION_TYPE: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_INVALID_SERIALIZATION_TYPE: 2005>
    CLI_NO_BACKEND_TO_HANDLE: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_NO_BACKEND_TO_HANDLE: 2009>
    CLI_SEND_REQ_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_SEND_REQ_FAILED: 2010>
    CLI_SERIALIZATION_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_SERIALIZATION_FAILED: 2006>
    CLI_UNKNOWN: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.CLI_UNKNOWN: 2000>
    OK: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.OK: 0>
    SVR_BACKEND_INTERNAL_ERROR: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_BACKEND_INTERNAL_ERROR: 1001>
    SVR_DESERIALIZATION_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_DESERIALIZATION_FAILED: 1007>
    SVR_HANDLE_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_HANDLE_FAILED: 1008>
    SVR_INVALID_DESERIALIZATION_TYPE: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_INVALID_DESERIALIZATION_TYPE: 1006>
    SVR_INVALID_SERIALIZATION_TYPE: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_INVALID_SERIALIZATION_TYPE: 1004>
    SVR_NOT_FOUND: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_NOT_FOUND: 1003>
    SVR_NOT_IMPLEMENTED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_NOT_IMPLEMENTED: 1002>
    SVR_SERIALIZATION_FAILED: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_SERIALIZATION_FAILED: 1005>
    SVR_UNKNOWN: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.SVR_UNKNOWN: 1000>
    TIMEOUT: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.TIMEOUT: 2>
    UNKNOWN: typing.ClassVar[RpcStatusRetCode]  # value = <RpcStatusRetCode.UNKNOWN: 1>
    __members__: typing.ClassVar[dict[str, RpcStatusRetCode]]  # value = {'OK': <RpcStatusRetCode.OK: 0>, 'UNKNOWN': <RpcStatusRetCode.UNKNOWN: 1>, 'TIMEOUT': <RpcStatusRetCode.TIMEOUT: 2>, 'SVR_UNKNOWN': <RpcStatusRetCode.SVR_UNKNOWN: 1000>, 'SVR_BACKEND_INTERNAL_ERROR': <RpcStatusRetCode.SVR_BACKEND_INTERNAL_ERROR: 1001>, 'SVR_NOT_IMPLEMENTED': <RpcStatusRetCode.SVR_NOT_IMPLEMENTED: 1002>, 'SVR_NOT_FOUND': <RpcStatusRetCode.SVR_NOT_FOUND: 1003>, 'SVR_INVALID_SERIALIZATION_TYPE': <RpcStatusRetCode.SVR_INVALID_SERIALIZATION_TYPE: 1004>, 'SVR_SERIALIZATION_FAILED': <RpcStatusRetCode.SVR_SERIALIZATION_FAILED: 1005>, 'SVR_INVALID_DESERIALIZATION_TYPE': <RpcStatusRetCode.SVR_INVALID_DESERIALIZATION_TYPE: 1006>, 'SVR_DESERIALIZATION_FAILED': <RpcStatusRetCode.SVR_DESERIALIZATION_FAILED: 1007>, 'SVR_HANDLE_FAILED': <RpcStatusRetCode.SVR_HANDLE_FAILED: 1008>, 'CLI_UNKNOWN': <RpcStatusRetCode.CLI_UNKNOWN: 2000>, 'CLI_BACKEND_INTERNAL_ERROR': <RpcStatusRetCode.CLI_BACKEND_INTERNAL_ERROR: 2002>, 'CLI_INVALID_CONTEXT': <RpcStatusRetCode.CLI_INVALID_CONTEXT: 2003>, 'CLI_INVALID_ADDR': <RpcStatusRetCode.CLI_INVALID_ADDR: 2004>, 'CLI_INVALID_SERIALIZATION_TYPE': <RpcStatusRetCode.CLI_INVALID_SERIALIZATION_TYPE: 2005>, 'CLI_SERIALIZATION_FAILED': <RpcStatusRetCode.CLI_SERIALIZATION_FAILED: 2006>, 'CLI_INVALID_DESERIALIZATION_TYPE': <RpcStatusRetCode.CLI_INVALID_DESERIALIZATION_TYPE: 2007>, 'CLI_DESERIALIZATION_FAILED': <RpcStatusRetCode.CLI_DESERIALIZATION_FAILED: 2008>, 'CLI_NO_BACKEND_TO_HANDLE': <RpcStatusRetCode.CLI_NO_BACKEND_TO_HANDLE: 2009>, 'CLI_SEND_REQ_FAILED': <RpcStatusRetCode.CLI_SEND_REQ_FAILED: 2010>, 'CLI_FUNC_NOT_REGISTERED': <RpcStatusRetCode.CLI_FUNC_NOT_REGISTERED: 2001>}
    def __eq__(self, other: typing.Any) -> bool:
        ...
    def __getstate__(self) -> int:
        ...
    def __hash__(self) -> int:
        ...
    def __index__(self) -> int:
        ...
    def __init__(self, value: int) -> None:
        ...
    def __int__(self) -> int:
        ...
    def __ne__(self, other: typing.Any) -> bool:
        ...
    def __repr__(self) -> str:
        ...
    def __setstate__(self, state: int) -> None:
        ...
    def __str__(self) -> str:
        ...
    @property
    def name(self) -> str:
        ...
    @property
    def value(self) -> int:
        ...
class ServiceBase:
    def PbRegisterServiceFunc(self, arg0: str, arg1: PyPbTypeSupport, arg2: PyPbTypeSupport, arg3: typing.Callable[[RpcContextRef, bytes], tuple[RpcStatus, str]]) -> None:
        ...
    def RpcType(self) -> str:
        ...
    def ServiceName(self) -> str:
        ...
    def SetServiceName(self, arg0: str) -> None:
        ...
    def __init__(self, arg0: str, arg1: str) -> None:
        ...
class SubscriberRef:
    def GetTopic(self) -> str:
        ...
    def PbSubscribeWithCtx(self, arg0: PyPbTypeSupport, arg1: typing.Callable[[ContextRef, bytes], None]) -> bool:
        ...
    def __bool__(self) -> bool:
        ...
    def __init__(self) -> None:
        ...
class aimrt_channel_context_type_t:
    """
    Members:
    
      AIMRT_CHANNEL_PUBLISHER_CONTEXT
    
      AIMRT_CHANNEL_SUBSCRIBER_CONTEXT
    """
    AIMRT_CHANNEL_PUBLISHER_CONTEXT: typing.ClassVar[aimrt_channel_context_type_t]  # value = <aimrt_channel_context_type_t.AIMRT_CHANNEL_PUBLISHER_CONTEXT: 0>
    AIMRT_CHANNEL_SUBSCRIBER_CONTEXT: typing.ClassVar[aimrt_channel_context_type_t]  # value = <aimrt_channel_context_type_t.AIMRT_CHANNEL_SUBSCRIBER_CONTEXT: 1>
    __members__: typing.ClassVar[dict[str, aimrt_channel_context_type_t]]  # value = {'AIMRT_CHANNEL_PUBLISHER_CONTEXT': <aimrt_channel_context_type_t.AIMRT_CHANNEL_PUBLISHER_CONTEXT: 0>, 'AIMRT_CHANNEL_SUBSCRIBER_CONTEXT': <aimrt_channel_context_type_t.AIMRT_CHANNEL_SUBSCRIBER_CONTEXT: 1>}
    def __eq__(self, other: typing.Any) -> bool:
        ...
    def __getstate__(self) -> int:
        ...
    def __hash__(self) -> int:
        ...
    def __index__(self) -> int:
        ...
    def __init__(self, value: int) -> None:
        ...
    def __int__(self) -> int:
        ...
    def __ne__(self, other: typing.Any) -> bool:
        ...
    def __repr__(self) -> str:
        ...
    def __setstate__(self, state: int) -> None:
        ...
    def __str__(self) -> str:
        ...
    @property
    def name(self) -> str:
        ...
    @property
    def value(self) -> int:
        ...
AIMRT_MIN_GENCODE_VERSION_INT: int = 10000
AimRT_RUNTIME_VERSION_INT: int = 1000000
